package Top101K;
import java.util.*;
/**
 * @Author quan
 * @Description 反转字符串
 * @Date 2023/9/20 22:10
 */
public class a01_reverseString {
    public static void main(String[] args){
        //使用库函数
//        StringBuilder sb = new StringBuilder("hello world");
//        System.out.println(sb.reverse());
        //自己实现反转
//        String str = "hello world";
//        char[] arr = new char[str.length()];
//        int n = arr.length-1;
//        for(int i = 0;i <arr.length;i++){
//            arr[n-i] = str.charAt(i);
//        }
//        System.out.println(arr);

        //1-大小写转换的方式
        String str = "hello WORLD";
        StringBuilder sb = new StringBuilder();
        for(int i =0; i<str.length();i++ ){
            //如果是大写，转换为小写
            if(str.charAt(i) <='Z' && str.charAt(i) >='A'){
                sb.append(str.charAt(i) -'A' +'a');
                //如果是小写，转换为大写
            }else if (str.charAt(i) >='a' && str.charAt(i) <='z') {
                sb.append(str.charAt(i) -'a' + 'A');
            }else{
                //如果是空格，直接添加
                sb.append(str.charAt(i));
            }
        }
        //2-将整个字符串反转
        sb = sb.reverse();
        //3-反转局部字符串
        for(int i=0;i<str.length();i++){
            //定义一个指针j，找到第一个空字符串，就找到了子字符串的开始与结束位置
            int j = i;
            while (j<str.length() && sb.charAt(j) !=' '){
                j++;
            }
            //获取子字符串
            String subStr = str.substring(i,j);
            //新建一个容器，放入子字符串
            StringBuilder sb1 = new StringBuilder(subStr);
            //反转子字符串
            subStr = sb1.reverse().toString();
            //更新原字符串
            sb.replace(i,j,subStr);
            //更新索引值
            i = j;
        }
        System.out.println(sb);
    }
}
